/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package persistencia;

import entidades.ProductoImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.ProductoAgente;

/**
 *
 * @author Leandro
 */
public class IntermediarioProducto extends IntermediarioPersistencia{

    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        String sql = "SELECT * FROM PRODUCTO WHERE " + criterio.convertirAString();
        return sql;
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {

        List<Object> resultado = new ArrayList<Object>();
        ProductoImpl implementacion;
        ProductoAgente agente;

        try {
            while (result.next()) {
                implementacion = new ProductoImpl();
                agente = new ProductoAgente();
                agente.setProducto(implementacion);

                agente.setOid(result.getString("oidProducto"));
                agente.setMarca(result.getString("marca"));
                agente.setCodProducto(result.getInt("codProducto"));
                agente.setNombreProducto(result.getString("nombreProducto"));
                agente.setDescripcionProducto(result.getString("descripcionProducto"));
                agente.setCantDisponible(result.getInt("cantidadDisponible"));
                agente.setBloqueado(result.getBoolean("bloqueado"));
               
                resultado.add(agente);
            }

        } catch (Exception e) {
            System.out.println("Error en materialización producto: " + e.toString());
        }

        return resultado;
    }

    @Override
    protected String generarSQLBuscarTodo() {
        return "SELECT * FROM PRODUCTO";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
        return "SELECT * FROM PRODUCTO WHERE oidProducto = '" + oid+ "'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
        ProductoAgente ob = (ProductoAgente) objeto;
        String sql = "INSERT INTO PRODUCTO (oidProducto, marca, codProducto, "
                + "nombreProducto, descripcionProducto, cantidadDisponible, bloqueado) VALUES ("
                + "'" + ob.getOid()
                //+generarOid()
                //+ ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                + "', '" + ob.getMarca()
                + "', " + ob.getCodProducto()
                + ", '" + ob.getNombreProducto()
                +"', '"+ ob.getDescripcionProducto()
                +"', "+ ob.getCantDisponible()
                +", "+ convertirBooleanAInt(ob.isBloqueado())                
                + ")";
        System.out.println("SQL Guardar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        ProductoAgente ob = (ProductoAgente) objeto;
        String sql = "UPDATE PRODUCTO SET "
                + "marca = '" + ob.getMarca()
                + "', codProducto = " + ob.getCodProducto()
                + ", nombreProducto = '" + ob.getNombreProducto()
                + "', descripcionProducto = '" + ob.getDescripcionProducto()
                + "', cantidadDisponible = "+ ob.getCantDisponible()
                + ", bloqueado = "+ convertirBooleanAInt(ob.isBloqueado())
                + " WHERE oidProducto = '" + ob.getOid() 
                + "'";
        System.out.println("SQL Actualizar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
        return "DELETE FROM PRODUCTO WHERE oidProducto = '" + ((Agente) objeto).getOid() + "'";
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
